package edu.ort.domain

import edu.ort.services.ChartGeneratorService

class ListGastoController {

    def chartGeneratorService

    def beforeInterceptor = [action:this.&checkUser]

    def checkUser() {
            if(!session.user) {
                    // i.e. user not logged in
                    redirect(controller:'user',action:'login')
                    return false
            }
    }


    def index = { 
        redirect(action: "list", params: params)
    }

    def list = {
        params.max = Math.min(params.max ? params.int('max') : 10, 100)
        def gastoInstance = Gasto.findAll("from Gasto as g ")
        Date fechaini = new Date()
        fechaini.setDate(1) // Inicializo el dia desde
        [gastoInstanceList: gastoInstance, gastoInstanceTotal: Gasto.count(),
        fechaDesde: fechaini,
        urlChart:chartGeneratorService.generatePieChartCategoria(fechaini,new Date())]
    }

    def search = {
        params.max = Math.min(params.max ? params.int('max') : 10, 100)
        def gastoInstance = Gasto.findAll("from Gasto as g where (((year(g.fecha)*100+month(g.fecha))*100)+day(g.fecha)) >= " +
            " (((year(:fechaDesde)*100+month(:fechaDesde))*100)+day(:fechaDesde)) " +
            " and (((year(g.fecha)*100+month(g.fecha))*100)+day(g.fecha)) <= " +
            " (((year(:fechaHasta)*100+month(:fechaHasta))*100)+day(:fechaHasta)) ",
            [fechaDesde:params.vFechaDesde, fechaHasta:params.vFechaHasta])
        render(view: "list", model:[gastoInstanceList: gastoInstance, gastoInstanceTotal: Gasto.count(),
                fechaDesde: params.vFechaDesde, fechaHasta: params.vFechaHasta,
                urlChart:chartGeneratorService.generatePieChartCategoria(params.vFechaDesde,params.vFechaHasta)] )
    }
    

}
